home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Satanic Rites 4
/
Satanic Rites - Issue 4 (1993-05-29)(Destiny).adf
/
DIY_cart
< prev
next >
Wrap
Text File
|
1990-01-05
|
6KB
|
151 lines
}0a000
{g --- --------
{f DIY Hardware
{g --- --------
{cContributers:
{a Terminator / Destiny - Coding
Narc / Destiny - Hardware
This article will detail how anyone with knowledge of 68000 assembly and
electronics could go about constructing a device similiar to Datels Action
Replay. Although there will be some differences between our cartridge for
various reasons such as costs, simplicity e.t.c. Any reference to WE below
refers to Narc and myself (Terminator)
{d-= {fHARDWARE DESIGN {d=-{a
Okay. There are two ways you could go about this.
{c 1.{a You have the software in an Eprom.
Disadvantages: Costs. You need an Eprom programmer for a start...
{c 2.{a You have 128k of RAM on the board.
Disadvantages: You have to upload your software into the board every
time you turn on the Amiga.
We will be using the second method. It isn't really a disadvantage anyway
because then, you will be able to update your cartridge program easily. and
also, you could in theory, dump commercial cartridges to disk, then upload
them into your CART-RAM.
The next problem is finding a way of activating the cartridge.
{c 1.{a The Expansion bus has a pin called BEER which when pulled low, causes a
bus error exception.
If we repoint the bus error vector at $8.w to the first address of our
cartidrige ram, when we pull this low, we wil be thrown into the
cartridge. (Upon exit, dont forget we have to fix the bus error stuff
thats been dumped onto the stack)
This method is lousy coz we have to repoint the BUS ERROR VECTOR
which is lame and If a program changes it back, then we won't enter the
cartridge! Bad news :-(
{c 2.{a The Expansion bus also contains 3 pins which you use Binary style to
tell the amiga which interupt to cause when the cartridge is activated.
In this case, a level 7 (NMI - Non maskable interupt) is best because
basically, this interupt is Unstoppable.
So we pull all three lines low. (1+2+4 = 7)
{c 3.{a Upon reset, the computer jumps to F00002.
Look at the reset routine in ROM. You will notice that it checks if
{fF00000 {ais a copy of Rom, if not, it jumps to 2(a5) where a5 points to
{f F00000.{a
Well, why not use an Address decoder in the cartridge to map our RAM to
{f F00000.{a Then, the ROM will not copy there. And on reset we jump into the
cartridge.
But isn't resetting a lousy way of entering the monitor?
Ok, Well connect a switch to pull the RESET line low.
(This causes an external reset but does the same thing as the 3key reset
- I think :-)
{c 4.{a Software interrupts.
This method is pretty pointless considering the fact that a mojority of
programs you wanna enter (games,demos e.t.c.) will kill multitasking and
that goes for a mojority of interupts.
Note however, that a lot of demos dont kill the level 6 interupt.
There's an entry point!
{a So there we have four methods of entering the cartridge.
We decided to choose option 3 because basically, it is unstoppable.
And don't tell me otherwise because the 3 key reset is Hardwired to reset.
(Maybe not on Wb2.0 - I hear the Keyboard.device accepts the
installResetHandler which did nothing on V1.3 - True?)
{d -= {fSOFTWARE DESIGN {d=-{a
Okay, a few points have to be remembered.
{e 1. {aYour code must be relocatable. Make it PC relative.
{e 2. {aNo Absolute addressing
{e 3. {aDon't use intuition screens! Use a custom screen.
{e 4. {aTry not if possible to use any library routines other than Exec & Dos
{e 5. {aOn entry, Store the current system status, Restore cartridge variables
{ato defaults.
{e 6. {aOn exit, Restore system status.
{a Those were the basics.
{e The clever amongst you will have been wondering where we set up our screen?
Because basically, the bitplane pointers only work when pointing into ChipRAM
{a That is also why action replay and other such devices use a 1 plane screen.
(to cut down on memory use)
{a This is what we do on entry to the cartridge.
{f 1> {eTake an area of memory (256*40) from $1000.w
{f 2> {eSwap it with a chunk (256*40) of cartridge memory.
{f 3> {eWe then address or screen memory at $1000.w{a
On exit, we swap the 1000.w with our cartridge memory again. There is no
other way of doing this. (Even AR3 does it)
The larger your screen and the more planes it has, the more chipram you have
to overwrite. Therefore, a 1 plane lowres screen would be best but it looks
shit so we chose a 1 plane medres screen!
{d-= {fCONNECTORS {d=-{a
The 86 pin edge connectors for the A500 expansion port, are quite difficult to
obtain. I asked Commodore for a supplier and they gave me the following fone
number :-
{e CPC Inc. - 0772 555034
{a They are {gCommodore's {a official spares company so if they don't have any, you
can't get them! If you are stuck and can't get the proper connectors, then
there are two ways you could go about MAKING SOME!
{c 1) {aGet a 96 pin connector and cut it down to size.
it looks like this ...
{f ::::::::::::::::::::::::::::::::: :::::::::::::::
{a That's right it has a gap! And that gap makes the connector size shorter
than 86 pins. Damn! Don't Worry! It will still fit and all the pins we use
will still be accessable!
It just won't look so good! :-(
{c 2) {aGet two 40 something connectors and cut them so they have 43 pins on
each and then glue them together!
It is a good idea to put some sort of solid material on thge top and
bottom like this ...
{g ------------- {a <- Solid stuff
{f ::::::::::::::::::::::::::::::::::::::::::: {a < 2 connectors glued together in middle
{g ------------- {a<- Solid stuff
{a Well, That's all I'm going to say for this month. This article will be
continued only if I get some feedback from {dYOU{a!
{a I don't wanna be writing articles which no-one is going to read! If you like
this article and want it to appear regularly, let us know!
{f Thanks! - Terminator